#include <vector>
#include <Material.hpp>
#include <MathVector.hpp>
using namespace Mathing;

#ifndef _CLASSMODELINGPOLYGON_
#define _CLASSMODELINGPOLYGON_

namespace Modeling {

class Polygon
{
public:
	virtual ~Polygon();
	Polygon();
	Polygon(Vector3f* v1, Vector3f* v2, Vector3f* v3);

	unsigned int getVertQty();
	void addVertex(Vector3f* vertex);
	Vector3f* getVertex(unsigned int index);

	Vector3f getPolygonNormal();
	unsigned int getNormalsQty();
	void addNormal(Vector3f normal);
	Vector3f* getNormal(unsigned int index);

	unsigned int getMapCoordsQty();
	void addMapCoord(Vector2f* mapCoord);
	Vector2f* getMapCoord(unsigned int index);

	virtual Modeling::Material* getMaterial();
	virtual void setMaterial(Modeling::Material* material);

protected:
	Modeling::Material* material;
	std::vector< Vector3f* > vertex;
	std::vector< Vector3f* > normal;
	std::vector< Vector2f* > mapCoord;
};

}// namespace Modeling

#endif
